class Utils{
	
	constructor(){
		// this.baseUrl = 'http://159.75.169.224:7300/pz'
		//接口上线，改成域名了， 通过域名后就可以将这个域名添加到 小程序公众平台上-里进行配置
		//这样就可以在微信小程序工具中去掉不校验合法验证
			this.baseUrl = 'http://code.itndedu.com/pz'
	}
	
	
	//获取用户信息
	getUserInfo(){
		//调用登录的api
		uni.login({
			success: res => {
				console.log(res)
				this.request({
					url:'/auth/wxLogin',
					data:{
						code: res.code
					},
					success: res => {
						console.log(res,'res')
					}
					
				})
			}
		})
	}
	
	//二次封装请求
	/**
	 * 当option 没有传入，则默认参数时{showLoading: false}
	 * 有传，则已option 是传入的参数
	 * 
    **/
	request(option = {showLoading: false}){
		//判断url是否存在
		if(!option.url){
			return false
		}
		
		//2. 若参数传了showLoading 则会出现loading
		if(option.showLoading){
			this.showLoading()
		}
		
		uni.request({
			url: this.baseUrl + option.url,
			data: option.data? option.data : {},  //容错判断
			header: option.header? option.header : {},
			method: option.method? option.method : 'GET',
			success: (response) =>{
				//请求成功公共的逻辑部分
				//1. 请求成功后关闭loading
				uni.hideLoading()
				//2. 后端返回的数据异常
				if(response.data.code != 10000){
					//将失败的结果返回回去
					if(option.fail && typeof option.fail == 'function'){
						option.fail(response)
					}
				}else{
					//将成功的结果返回回去
					if(option.success && typeof option.success == 'function'){
						option.success(response.data)
					}
				}
				
			},
			fail: response => {
				//当请求状态不是200时，
				console.log(response)
			    uni.hideLoading()
			}
		})
	}
	
	//创建加载的loading效果
	//封装的目的是：防止当同一个页面请求多个方法时， 出现多个loading重叠的效果
	//该方法只会让函数存在一个loading的加载效果
	//思路则是关闭所有状态为true的isShowLoading 的loading， 然后统一设置一次loading
	showLoading(){
		//需通过全局的变量存储  getStorageSync同步存储
		const isShowLoading = uni.getStorageSync('isShowLoading');
		if(isShowLoading){
			//若存在，则关闭该loading效果，同时设置为true
			uni.hideLoading()
			uni.setStorageSync('isShowLoading',false)
		}
		
		uni.showLoading({
			title:'加载中...',
			complete:function(){
				uni.setStorageSync('isShowLoading',true)
			},
			fail:function(){
				uni.setStorageSync('isShowLoading',false)
			}
		})
	}
}

export default new Utils()